package IO流.课后作业.M7;

import java.io.File;
import java.util.*;

/**
 * 码云作业七：5.键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如："java","txt")作为key,
 *     用个数作为value,放入到map集合中,并用两种方式遍历map集合
 *     例如：
 *     doc 的类型的文件有  3 个
 *     java 的类型的文件有  5 个
 *     txt 的类型的文件有  7 个
 */
public class Test {
    public static void main(String[] args) {
        System.out.print("请输入文件夹路径:");
//		测试路径：D:\360MoveData\Users\xucc\Desktop\aaa
        File file = new File(new Scanner(System.in).next());
        HashFile(file);
    }

    public static void HashFile(File file) {
        File[] fileArr = file.listFiles();
        List<String> list = new ArrayList<>();//新建一个数组，用来存储所有文件的后缀名
        for (File f : fileArr) {
            if (!f.isDirectory()) {
                int index = f.toString().indexOf(".");//获取文件名中“.”的下标
                String fileName = f.toString().substring(index + 1);// 截取文件后缀名
                list.add(fileName);
            } else {
                File[] file2 = f.listFiles();
                for (File f2 : file2) {
                    int index = f2.toString().indexOf(".");
                    String fileName = f2.toString().substring(index + 1);// 截取文件后缀名
                    list.add(fileName);
                }
            }
        }

        HashMap<String, Integer> hm = new HashMap<>();
        int value = 1;
        for (String f : list) {
            if (!hm.containsKey(f))
                hm.put(f, 1);
            else
                hm.put(f, ++value);
        }

        for(String key : hm.keySet())
            System.out.println(key +"的类型的文件有"+hm.get(key));
        System.out.println("________________");

        for (Map.Entry<String, Integer> me : hm.entrySet()) {
            String key = me.getKey();
            int numValue = me.getValue();
            System.out.println(key + "的类型的文件有" + numValue);
        }
    }
}
